package com.dong.design.iterator;

import java.util.ArrayList;
import java.util.List;

/**
 * 迭代器模式
 * 关键代码：定义接口：hasNext, next。
 * 应用实例：JAVA 中的 iterator。
 * 使用场景： 1、访问一个聚合对象的内容而无须暴露它的内部表示。 2、需要为聚合对象提供多种遍历方式。 3、为遍历不同的聚合结构提供一个统一的接口。
 *
 * @author jianyang206881
 * @date 2018/6/26
 */
public class IteratorPatternDemo {
    public static void main(String[] args) {
        NameRepository namesRepository = new NameRepository();

        for (Iterator iter = namesRepository.getIterator(); iter.hasNext(); ) {
            String name = (String) iter.next();
            System.out.println("Name : " + name);
        }

        List<String> stringList = new ArrayList<String>() {{
            add("aaa");
            add("bbb");
            add("ccc");
        }};

        java.util.Iterator<String> iterator = stringList.iterator();
        while (iterator.hasNext()) {
            iterator.next();
            iterator.remove();
//            stringList.remove(iterator.next());
        }
    }
}
